﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace thinger.MTHControlLib
{
    public partial class Dashboard : UserControl
    {
        public Dashboard()
        {
            InitializeComponent();
            //设置组件的样式 解决闪烁的问题，和背景问题
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);//此设置确保控件的所有绘制都通过 WM_PAINT 消息处理。这有助于避免绘制不一致和闪烁问题，
            this.SetStyle(ControlStyles.DoubleBuffer, true);//双缓冲是一种减少或消除闪烁的技术，它通过在内存中绘制控件的副本，然后再一次性将其绘制到屏幕上，从而提高了绘制的平滑性。
            this.SetStyle(ControlStyles.ResizeRedraw, true);//当控件大小改变时，此设置确保控件会重绘其内容。这有助于避免在调整控件大小时出现绘制问题，如未更新的区域或闪烁。
            this.SetStyle(ControlStyles.Selectable, true);//此设置使控件可选择。对于某些控件（如自定义控件），可能需要明确设置此标志以启用选择功能。
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); //此设置允许控件支持透明背景色。当控件的背景色设置为 Color.Transparent 时，它将显示其父容器的背景。

        }


        private string title = "1#站点";
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("标题")]
        public string Title
        {
            get { return title; }
            set
            {
                title = value;
                this.lblTitle.Text = title;
                this.Invalidate();
            }
        }

        private float tempValue = 0.0f;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("温度")]
        public float TempValue
        {
            get { return tempValue; }
            set
            {
                if (tempValue != value) 
                {
                    tempValue = value;
                    this.dialPlate1.Temp = tempValue;
                    this.lblTemp.Text = tempValue.ToString();
                    this.Invalidate();
                }
                
            }
        }

        private string tempVarName;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("温度变量名字")]
        public string TempVarName
        {
            get { return tempVarName; }
            set
            {
                tempVarName = value;
                this.Invalidate();
            }
        }


        private float humidityValue = 0.0f;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("湿度")]
        public float HumidityValue
        {
            get { return humidityValue; }
            set
            {
                if (humidityValue != value) 
                {
                    humidityValue = value;
                    this.dialPlate1.Humidity = humidityValue;
                    this.lblHumidity.Text = humidityValue.ToString();
                    this.Invalidate();
                }
                
            }
        }

        private string humidityVarName;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("湿度变量名字")]
        public string HumidityVarName
        {
            get { return humidityVarName; }
            set
            {
                humidityVarName = value;
                this.Invalidate();
            }
        }

        private string statusVarName;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("状态变量名字")]
        public string StatusVarName
        {
            get { return statusVarName; }
            set
            {
                statusVarName = value;
                this.Invalidate();
            }
        }

        private bool modbusError = false;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("错误状态")]
        public bool ModbusError
        {
            get { return modbusError; }
            set
            {
                modbusError = value;
                this.lblTitle.ForeColor =  modbusError ? Color.Red : Color.White;
                this.Invalidate();
            }
        }

    }
}
